<?php

class Repuesto_X_Solicitud_Model extends CI_Model {
    const STR_NOMBRE_TABLA = 'repuesto_solicitud';
    const STR_NOMBRE_TABLA_REPUESTO = 'repuesto';
    
    /**
     * Constructor
     * @author Fernando Esteban Valerio
     */
    function __construct() {
        parent::__construct();
    }
    
    /**
     * Listar los repuestos asociados a una solicitud.
     * @author Fernando Esteban Valerio
     * @param int $idSolicitud Id Solicitud
     * @return array
     */
    function getListRepuestoXSolicitud($idSolicitud=0, $idRepuesto=0, $idEstado=0) {
        $this->db->select("
            repuesto_solicitud.id_repuesto AS id_repuesto,
            repuesto_solicitud.id_solicitud AS id_solicitud,            
            repuesto.nombre AS nombre_repuesto,
            repuesto_solicitud.numero_parte AS numero_parte,
            repuesto_solicitud.tipo AS tipo,
            repuesto_solicitud.descripcion AS descripcion,
            repuesto_solicitud.cantidad AS cantidad,
            repuesto_solicitud.foto_repuesto AS foto_repuesto,
            repuesto_solicitud.id_estado AS id_estado");            
        $this->db->from(self::STR_NOMBRE_TABLA);
        $this->db->join(self::STR_NOMBRE_TABLA_REPUESTO, "repuesto.id_repuesto = repuesto_solicitud.id_repuesto");
        if ($idSolicitud > 0) {
            $this->db->where('repuesto_solicitud.id_solicitud', $idSolicitud);
        }
        if ($idRepuesto > 0) {
            $this->db->where('repuesto_solicitud.id_repuesto', $idRepuesto);
        }
        if ($idEstado > 0) {
            $this->db->where('repuesto_solicitud.id_estado', $idEstado);
        }
        $query = $this->db->get();
        return $query->result();
    }

    /**
     * Registrar la información de los repuestos asociados a una solicitud.
     * @author Fernando Esteban Valerio
     * @param array $data Arreglo de datos de los repuestos asociados a una solicitud
     */
    function insert($data) {
        $this->db->set('id_repuesto', $data['id_repuesto']);
    	$this->db->set('id_solicitud', $data['id_solicitud']);
    	$this->db->set('numero_parte', $data['numero_parte']);
        $this->db->set('tipo', $data['tipo']);
        $this->db->set('descripcion', $data['descripcion']);
    	$this->db->set('cantidad', $data['cantidad']);
        $this->db->set('foto_repuesto', $data['foto_repuesto']);
        $this->db->set('id_estado', $data['id_estado']);
        $this->db->set('usuario_registro', $data['usuario_registro']);
        $this->db->set('fecha_registro', $data['fecha_registro']);
        $this->db->insert(self::STR_NOMBRE_TABLA);
    }
    
    /**
     * Actualizar la información de los repuestos asociados a una solicitud.
     * @author Fernando Esteban Valerio
     * @param array $data Arreglo de datos de los repuestos asociados a una solicitud
     */
    function update($data) {        
        $this->db->set('numero_parte', $data['numero_parte']);
        $this->db->set('tipo', $data['tipo']);
        $this->db->set('descripcion', $data['descripcion']);
    	$this->db->set('cantidad', $data['cantidad']);
        $this->db->set('foto_repuesto', $data['foto_repuesto']);
        $this->db->set('usuario_modificacion', $data['usuario_modificacion']);
        $this->db->set('fecha_modificacion', $data['fecha_modificacion']);
        $this->db->where('id_repuesto', $data['id_repuesto']);
        $this->db->where('id_solicitud', $data['id_solicitud']);
        $this->db->update(self::STR_NOMBRE_TABLA);
    }
    
    /**
     * Actualizar el estado información de los repuestos asociados a una solicitud.
     * @author Fernando Esteban Valerio
     * @param array $data Arreglo de datos de los repuestos asociados a una solicitud
     */
    function updateEstado($data) {
        $this->db->set('id_estado', $data['id_estado']);
        $this->db->set('comentario', $data['comentario']);
        $this->db->set('usuario_modificacion', $data['usuario_modificacion']);
        $this->db->set('fecha_modificacion', $data['fecha_modificacion']);
        $this->db->where('id_repuesto', $data['id_repuesto']);
        $this->db->where('id_solicitud', $data['id_solicitud']);
        $this->db->update(self::STR_NOMBRE_TABLA);
    }
    
    function eliminarRepuestoXSolicitud($idSolicitud, $lstRepuesto) {
        $query = "DELETE FROM " . self::STR_NOMBRE_TABLA . " WHERE "
               . "id_solicitud = '" . $idSolicitud . "' AND "
               . "id_repuesto NOT IN (" . $lstRepuesto . ")";
        $this->db->query($query);
    }
}
